//1.应用级别的中间件：绑定到app实例上的中间件,如下
app.use((req,res,next)=>{
    console.log(1);
    next();
})
app.get('/user',(req,res,next)=>{
    console.log(1);
    next();
})

//2.路由级别的中间件：绑定到express.Router()实例上的中间件,如下
const express = require('express')
const router = express.Router()

router.use((req,res,next)=>{
    console.log(1);
    next()
})

//3.错误级别的中间件：捕获错误抛出异常的作用，必须有4个参数 err,req,res,next
//注：错误级别中间件必须写在所有路由后面
app.get('/',(req,res)=>{  //路由
    throw new Error('服务器内部发生错误')
    res.send('抛出异常')
})

app.use((err,req,res,next)=>{  //错误中间件
    console.log('发生了错误：' + err.message);
    res.send('Error:' + err.message)  //向客户端响应异常信息
})

//4.内置中间件: express.static 等等，具体看官网
app.use(express.static('clock'))  //静态托管clock文件夹里的资源


//5.第三方中间件，第三方开发的

/*  
    使用步骤：
    1.npm i body-paser
    2.使用require导入
    3.调用app.use()注册并使用中间件
*/
   